<?php
/**
 * Created by PhpStorm.
 * User: Guojunchen
 * Date: 2018/7/4
 * Time: 16:55
 */
namespace app\api\controller;


use app\common\model\VerifyCode;
use app\common\lib\Sms;
use think\Controller;

class Code extends Controller
{

    /**
     * register_mobile - 手机注册
     * login_mobile - 手机验证码登录
     * find_password_mobile - 找回密码
     * @var array
     */
    protected static $allow_auth_type = ['register_mobile','login_mobile','find_password_mobile'];

    /**
     * 发送手机验证码
     */
    public function send(){
        $data = input('post.');
        $auth_type = $data['type'];
        if (!in_array($auth_type, self::$allow_auth_type)){
            renderJson('验证码类型错误', 0);
        }
        $mobile = $data['mobile'];
        if (!check_mobile($mobile)){
            renderJson('请输入正确的手机号码', 0);
        }
        // 检测同一手机号验证码发送频率
        $effective_code = VerifyCode::getEffectiveCode($auth_type, $mobile);
        if ($effective_code && (time() - $effective_code->create_time) < config('app.sms_code_send_frequency')){
            renderJson('频繁发送验证码，请稍后再试', 0);
        }
        switch ($auth_type){
            case 'register_mobile':
                $model_user = model('user')->where('mobile', $mobile)->find();//如果手机号码，和role有1的就是表示注册过了
                if ($model_user){
                    renderJson('该手机号码已被注册', 0);
                }
                break;
            case 'login_mobile':
            case 'find_password_mobile':
                $model_user = model('user')->where('mobile', $mobile)->find();
                if (!$model_user){
                    renderJson('该手机号码未被注册，请重新输入', 0);
                }
                break;
            default:
                renderJson('验证码类型错误', 0);
        }
        // 上面多个case可走同一个方法，所以重新写一个
        $sms_type = '';
        switch ($auth_type){
            case 'register_mobile':
                //$sms_type = config('sms.sms_code_register');
                $sms_type = config('sms.sms_code_register');
                break;
            case 'login_mobile':
                // $sms_type = config('sms.sms_code_login');
                $sms_type = config('sms.sms_code_register');
                break;
            case 'find_password_mobile':
                //$sms_type = config('sms.sms_code_find_password');
                $sms_type = config('sms.sms_code_register');
                break;
        }
        // 添加验证码记录
        $data_add = array();
        $data_add['auth_type'] = $auth_type;
        $data_add['mobile'] = $mobile;
        if(is_weixin()){
            $data_add['source'] = 'wx';
        }else{
            $data_add['source'] = 'web';
        }
        $code = VerifyCode::add($data_add);
        if ($code){
            // 发送短信
            //$result = Sms::sendSms($mobile, $code, $sms_type);
            $result = new \stdClass();
            $result->Code = 'OK';
            if ($result->Code == 'OK'){
                renderJson('发送成功', 1);
            } else{
                renderJson('发送失败，失败原因：'.$result->Message, 0);
            }
        } else{
            renderJson('发送失败', 0);
        }
    }




}